package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.model.BCompany;
import cn.huiyunche.base.service.model.SUser;
import cn.huiyunche.base.service.vo.CompanyUserVo;
import cn.huiyunche.base.service.vo.PageVo;
import cn.huiyunche.base.service.vo.Result;
import cn.huiyunche.base.service.vo.SUserRequestVo;
import cn.huiyunche.tools.basic.exceptions.BusinessException;

import java.util.List;
import java.util.Map;

public interface CompanyService {

    /**
     * 查询企业列表
     *
     * @param page
     * @return
     * @throws BusinessException
     */
    Map<String, Object> list(PageVo page);

    /**
     * 根据企业ID 查询企业详情
     *
     * @param id
     * @return
     * @throws BusinessException
     */
    Map<String, Object> selectById(Long id);

    /**
     * 添加公司信息
     * 托运企业
     * 物流企业
     *
     * @param companyData
     * @return
     * @throws BusinessException
     */
    Result<String> saveCompany(BCompany companyData);

    Map<String, Object> addCompany();

    /**
     * 添加企业用户
     *
     * @param surv
     * @return
     */
    Result<String> signCommpanyUser(SUserRequestVo surv);

    Map<String, Object> selectCompanyUser(PageVo page, CompanyUserVo companyUserVo);

    List<BCompany> selectCompany();

    List<BCompany> selectCompanyByCompanyCode(Long companyCode);

    /**
     * 查询承运商列表
     *
     * @return
     * @throws Exception
     */
    List<SUser> carrierList(Boolean truckType) throws Exception;

    /**
     * 根据类型 查询所有公司信息
     *
     * @param companyCategory
     * @return
     */
    List<BCompany> selectCompanyByCategory(String companyCategory);

    /**
     * 根据当前用户 查询公司名称
     *
     * @return
     */
    String getNameBycurrentUser();

    /**
     * 根据当前用户 查询用户登录后信息
     *
     * @return
     */
    Map<String, Object> getSCompanyUserInfo();

    /**
     * 根据当前登录用户查询公司信息
     *
     * @return
     */
    BCompany getBCompanyByCurrentUser();

}
